package cn.sjx.modules.nbiot.entity.receive;

import io.netty.buffer.ByteBuf;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * 应答报文结构（0x78）
 * 地磁如果接受到的确认报文中含有重置命令，地磁在重置成功后会发送应答给平台。
 *
 * @Author: sjx
 * @Date: 2019年09月02日 0030 18:51:00
 */
@Data
@Accessors(chain = true)
public class IotProtocolReceive_0x78 extends ReceiveBase {

    /**
     * <p>
     * 字段名称：应答数据
     * 说明：25（0x19）：重置成功
     * 字节：2
     * </p>
     */
    private short ack;

    /**
     * <p>
     * 字段名称：地磁编号
     * 说明：地磁唯一编码
     * 字节：4
     * </p>
     */
    private int magId;

    /**
     * <p>
     * 字段名称：校验码
     * 说明：CRC16
     * 字节：2
     * </p>
     */
    private int crcCode;

    @Override
    public void decode(ByteBuf buf) {
        // 获取协议头部
        this.type = buf.readByte();

        // 解码报文body内容
        decodeImpl(buf);

        // 获取校验码
        this.crcCode = buf.readShort();
    }

    @Override
    protected void decodeImpl(ByteBuf buf) {

        // 获取应答数据
        this.ack = buf.readShort();

        // 获取地磁编号
        this.magId = buf.readInt();

    }

}
